Within an operating an environment, several software programs (e.g., operating systems, applications, device drivers, firmware) run simultaneously on a given set of hardware components. These programs may interact with one another, passing data back and forth to perform various functions. Updates to one or more programs within the operating environment, however, can disrupt the flow of data between programs, and can lead to one or more programs producing aberrant behaviors or regressions, including crashing. These regressions, as will be appreciated, cause user frustration and degrade the functionality of the computing devices on which the programs are run. Unfortunately, because the programs are often supplied by different developers, knowing which program to revert to a previous version, upgrade to a new (compatible) version, or disable to allow another program to run without interference, is often a laborious process full of guess-work.